package physics.movement;

import model.objects.GameObject;
import model.objects.Level;
import physics.EuclideanVector;


/**
 * Classes implementing MovementStrategy must define how an object moves at each
 * update call.
 * 
 * @author geo4
 * 
 */
public interface MovementStrategy {

    /**
     * Updates the position of a GameObject based upon the strategy's rules.
     * @param level level in which the mover exists
     * @param mover the object in the game that is moving
     * @param dt the amount of elapsed time since the last frame
     * @param globalForces all global forces of the simulation
     */
    void updatePosition (Level level, GameObject mover, double dt, EuclideanVector... globalForces);
}
